iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
Python

讓Python與資安共舞系列 第 13

主機狀態掃描(ICMP)

  • 分享至 

  • xImage
  •  

ICMP(Internet Control Message Protocal)位於TCP/IP協定福中的網路層。網際網路常常會出現很多錯誤,就是為了發現和處理這些錯誤的ICMP而生。相較於ARP,ICMP會更為複雜,不過它們的原理是一樣的。

ICMP封包
ICMP提供了大量的封包,這些封包可分為兩類,分別是差錯封包和查詢封包(一個請求一個回應),而和ARP不一樣的是ICMP查詢封包分為四類:回應請求或回應、時間戳記請求或回應、位址隱藏請求或回應、路由器請求或回應,後面三者的成功率很低,我們以第一個為主。

回應請求/回應 封包
Ping指令就是回應請求或回應內的其中一個指令,它可以測本機和目標的連通性,假設我們所在的主機IP為192.168.1.1,通訊目標的主機IP位址為192.168.1.2,想知道目標是否為活躍主機,就要向其發送一個ICMP請求,格式如下:

IP層內容
來源IP位址:192.168.1.1
目的IP位址:192.168.1.2
ICMP層內容
Type:8 (表示請求)

如果192.168.1.2這台主機處於活躍狀態,他收到上方的請求後,會給出一個回應,這個回應的格式如下:

IP層內容
來源IP位址:192.168.1.2
目的IP位址:192.168.1.1
ICMP層內容
Type:0 (表示回應)

也就是說,只要收到了ICMP回應,就可以判斷該主機處在活躍狀態。

撰寫一個活躍主機掃描程式

現在要撰寫一個利用ICMP實現的活躍掃描程式,先檢視參數以及IP位址:
https://ithelp.ithome.com.tw/upload/images/20240927/201693311g6dHlvx07.pnghttps://ithelp.ithome.com.tw/upload/images/20240927/20169331ddVuP3MmPh.png

輸入以下指令建立一個ICMP請求資料封包:
https://ithelp.ithome.com.tw/upload/images/20240927/20169331Jl5oh7IdIp.png

這個過程中等待滿久的,跑完後結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20240927/20169331zAOGFHeGZV.png

今天的ICMP介紹到這邊,明天將會介紹以TCP為基礎的活躍主機發現技術。


上一篇
主機狀態掃描(ARP)
下一篇
主機狀態掃描(TCP)
系列文
讓Python與資安共舞30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言